<template>
	<view class="classlist">
		<view class="loadingLayout" v-if="!classList.length && !noData">
			<uni-load-more status="loading"></uni-load-more>
		</view>

		<view class="content">
			<navigator :url="'/pages/preview/preview?id=' + item._id" class="item" v-for="item in classList" :key="item._id">
				<image :src="item.url" mode="aspectFill"></image>
			</navigator>
		</view>

		<view class="loadingLayout" v-if="classList.length || noData">
			<uni-load-more :status="noData ? 'noMore' : 'loading'"></uni-load-more>
		</view>

		<view class="safe-area-inset-bottom"></view>
	</view>
</template>

<script setup>
import { ref } from 'vue';
import { onLoad, onUnload, onReachBottom, onShareAppMessage, onShareTimeline } from '@dcloudio/uni-app';

import { getWallList, getHistoryWallList } from '@/api/index.js';
import { gotoHome } from '@/utils/common.js';
//分类列表数据
const classList = ref([]);
const noData = ref(false);

//定义data参数
const queryParams = {
	pageNum: 1,
	pageSize: 12
};
let pageName;
// 从缓存中获取用户id
const userId = uni.getStorageSync('userInfo')?.uid;

onLoad((e) => {
	let { id = null, name = null, type = null } = e;
	if (type) queryParams.type = type;
	if (id) queryParams.classId = id;

	pageName = name;
	//修改导航标题
	uni.setNavigationBarTitle({
		title: name
	});
	//执行获取分类列表方法
	getClassList();
});

onReachBottom(() => {
	if (noData.value) return;
	queryParams.pageNum++;
	getClassList();
});

//获取分类列表网络数据
const getClassList = async () => {
	let res;
	if (queryParams.classId) res = await getWallList(queryParams);
	if (queryParams.type) res = await getHistoryWallList({ ...queryParams, userId });

	classList.value = [...classList.value, ...res.data];
	if (queryParams.pageSize > res.data.length) noData.value = true;
	uni.setStorageSync('storgClassList', classList.value);
};

//分享给好友
onShareAppMessage((e) => {
	return {
		title: '致成相册-' + pageName,
		path: '/pages/classlist/classlist?id=' + queryParams.classId + '&name=' + pageName
	};
});

//分享朋友圈
onShareTimeline(() => {
	return {
		title: '致成相册-' + pageName,
		query: 'id=' + queryParams.classId + '&name=' + pageName
	};
});

onUnload(() => {
	uni.removeStorageSync('storgClassList');
});
</script>

<style lang="scss" scoped>
.classlist {
	.content {
		display: grid;
		grid-template-columns: repeat(3, 1fr);
		gap: 5rpx;
		padding: 5rpx;
		.item {
			height: 440rpx;
			image {
				width: 100%;
				height: 100%;
				display: block;
			}
		}
	}
}
</style>
